package com.leo.c02;

import java.util.ArrayList;
import java.util.List;

/**
 * VM Args：-Xms20m -Xmx20m -XX:+HeapDumpOnOutOfMemoryError
 * -Xmx3550m:设置JVM最大可用内存为3550M.
    -Xms3550m:设置JVM促使内存为3550m.此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存
    -XX:+HeapDumpOnOutOfMemoryError，JVM会在遇到OutOfMemoryError时拍摄一个“堆转储快照”，并将其保存在一个文件中。
    -XX:HeapDumpPath=E:\Java\dump，设置导出对存储快照的路径，默认再项目目录下
 * 会生成一个类似  java_pid15900.hprof 的文件，我用jdk安装目录下的 java visualVM 打开它，查看了他的结构
 * @author xuexiaolei
 * @version 2017年09月03日
 */
public class HeapOOM {
    static class OOMObject {
    }

    public static void main(String[] args) {
        List<OOMObject> list = new ArrayList<OOMObject>();

        while (true) {
            list.add(new OOMObject());
        }
    }
}
